package com.sz.admin.ai.controller.test;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @描述:
 * @Author: TangYuan
 * @Date: 2025/2/17 10:39
 */
@RestController
@RequestMapping("/ai/ollama")
public class OllamaTestController {
    //
    //
    // @Resource
    // private OllamaChatModel ollamaChatModel;
    //
    //
    // @RequestMapping(value = "/call")
    // public Object ollama(@RequestParam(value = "msg") String msg){
    //
    //     Prompt prompt = new Prompt(
    //             msg,
    //             OllamaOptions.builder().model("deepseek-r1:1.5b")
    //                     .temperature(0.7)
    //                     .build()
    //     );
    //
    //     ChatResponse call = ollamaChatModel.call(prompt);
    //
    //     String content = call.getResult().getOutput().getText();
    //     System.out.println(content);
    //     return content;
    // }
    //
    //
    // @GetMapping(value = "/steamCall", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    // public Flux<String> steamOllama(@RequestParam String msg) {
    //     Prompt prompt = new Prompt(
    //         msg,
    //         OllamaOptions.builder().model("deepseek-r1:1.5b")
    //             .temperature(0.7)
    //             .build()
    //     );
    //
    //     Flux<ChatResponse> stream = ollamaChatModel.stream(prompt);
    //     return stream.map(response -> response.getResult().getOutput().getText());
    // }
    //
    // @GetMapping(value = "/steamCall1")
    // public void startChat(@RequestParam String msg) {
    //     ChatClient chatClient = ChatClient.builder(ollamaChatModel)
    //             .build();
    //
    //     // 创建Prompt并发送聊天请求
    //     Prompt prompt = new Prompt(
    //             msg,
    //             OllamaOptions.builder().model("deepseek-r1:1.5b")
    //                     .temperature(0.7)
    //                     .build()
    //     );
    //
    //     // 调用AI模型并获取回复
    //     ChatClient.CallResponseSpec response = chatClient.prompt(prompt).call();
    //
    //     // 处理回复（例如，打印到控制台或返回给前端）
    //     System.out.println("AI回复: " + response.content());
    // }
    //
    // @GetMapping("texts")
    // public EmbeddingResponse embedding(@RequestBody List<String> textList) {
    //     EmbeddingRequest request = new EmbeddingRequest(textList,
    //             OllamaOptions.builder().model("nomic-embed-text:latest").build()
    //     );
    //     return ollamaEmbeddingModel.call(request);
    // }
    
    // @GetMapping(value = "chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    // public Flux<ServerSentEvent<String>> chatStreamWithDatabase(@RequestParam String prompt) {
    //     // question_answer_context是一个占位符，会替换成向量数据库中查询到的文档。QuestionAnswerAdvisor会替换。
    //     String promptWithContext = """
    //             下面是上下文信息
    //             ---------------------
    //             {question_answer_context}
    //             ---------------------
    //             给定的上下文和提供的历史信息，而不是事先的知识，回复用户的意见。如果答案不在上下文中，告诉用户你不能回答这个问题。
    //             """;
    //     return ChatClient.create(ollamaChatModel).prompt()
    //             .user(prompt)
    //             .advisors(new QuestionAnswerAdvisor(vectorStore, SearchRequest.builder().build(), promptWithContext))
    //             .stream()
    //             .content()
    //             .map(chatResponse -> ServerSentEvent.builder(chatResponse)
    //                     .event("message")
    //                     .build());
    // }
}
